package com.yanggu.scala.chapater11.scan

object ScanDemo01 {

  def main(args: Array[String]): Unit = {
    //扫描，即对某个集合的所有元素做fold操作，但是会把产生的所有中间结果放置于一个集合中保存
    //可以这样理解。将第一个参数放入其中, 同时将计算的中间结果保存下来。
    //scan的作用: 可以用于排错, 对于reduce的过程进行检查
    def minus(num1: Int, num2: Int) = num1 - num2

    //5 (1,2,3,4,5) => (5,4,2,-1,-5,-10)

    println((1 to 5).scan(5)(minus))

    def add(num1: Int, num2: Int) = num1 + num2

    //5 (1,2,3,4,5) =>(5,6,8, 11,15,20)
    println((1 to 5).scan(5)(add))

    def test(num1: Int, num2: Int) = num1 * num2

    //(3, 3, 6, 18)
    println((1 to 3).scan(3)(test))

  }

}
